﻿<?php

/**
 * utilisateur actions.
 *
 * @package    frigospeed
 * @subpackage utilisateur
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class utilisateurActions extends sfActions
{
	public function executeIndex(sfWebRequest $request)
	{
		if($request->getParameter('error') == "y") {
			echo "Désolé, votre identifiant ou mot de passe n'est pas correct.";
		}
		
		if($request->getParameter('error') == "yc") {
			echo "Désolé, les clients ne sont pour l'instant pas autorisés à se connecter au site.";
		}

		if($this->getUser()->isAuthenticated()) {
			$this->setTemplate("painel");
		} else {
			$this->setTemplate('index');
		}
		 
	}

	public function executeList() {
		$this->utilisateurs = Doctrine_Core::getTable('Utilisateur')
		->createQuery('a')
		->execute();
	}

	public function executeLogin(sfWebRequest $request)
	{
		$login = $request->getParameter('login');

		$this->utilisateur = Doctrine_Query::create()->select('u.id, u.type')->from('Utilisateur u')->where("u.login = '".$login."'")
		->andWhere("u.password = '".$request->getParameter('password')."'")->execute();

		if($this->utilisateur->count() != 1) {
			$this->redirect('utilisateur/index?error=y');
			$this->setTemplate('index');
		}
		
		if($this->utilisateur->getFirst()->getType() == "Client") {
			$this->redirect('utilisateur/index?error=yc');
			$this->setTemplate('index');
		}
		
		$this->getUser()->setAttribute('user', $login);
		$this->getUser()->setAttribute('userType', $this->utilisateur->getFirst()->getType());
		$this->getUser()->setAttribute('iduser', $this->utilisateur->getFirst()->getId());
		$this->getUser()->setAuthenticated(true);

		$this->getUser()->addCredential(strtolower($this->utilisateur->getFirst()->getType()));

		//$this->redirect('utilisateur/edit?idutilisateur='.$this->utilisateur->getFirst()->getIdutilisateur());
		$this->setTemplate('painel');
	}	
	
	public function executeLogout() {

		if ($this->getUser()->isAuthenticated())
		{
			$this->getUser()->getAttributeHolder()->remove('user');
			$this->getUser()->getAttributeHolder()->clear();
			$this->getUser()->setAuthenticated(false);
		}

		$this->setTemplate('index');
	}

	public function executeShow(sfWebRequest $request)
	{
		$this->utilisateur = Doctrine_Core::getTable('Utilisateur')->find(array($request->getParameter('id')));
		$this->forward404Unless($this->utilisateur);
	}

	public function executeNew(sfWebRequest $request)
	{
		$this->form = new UtilisateurForm();
	}

	public function executeCreate(sfWebRequest $request)
	{
		$this->forward404Unless($request->isMethod(sfRequest::POST));

		$this->form = new UtilisateurForm();

		$this->processForm($request, $this->form);

		$this->setTemplate('new');
	}

	public function executeEdit(sfWebRequest $request)
	{
		$this->forward404Unless($utilisateur = Doctrine_Core::getTable('Utilisateur')->find(array($request->getParameter('id'))), sprintf('Object utilisateur does not exist (%s).', $request->getParameter('id')));
		$this->form = new UtilisateurForm($utilisateur);
	}

	public function executeUpdate(sfWebRequest $request)
	{
		$this->forward404Unless($request->isMethod(sfRequest::POST) || $request->isMethod(sfRequest::PUT));
		$this->forward404Unless($utilisateur = Doctrine_Core::getTable('Utilisateur')->find(array($request->getParameter('id'))), sprintf('Object utilisateur does not exist (%s).', $request->getParameter('id')));
		$this->form = new UtilisateurForm($utilisateur);

		$this->processForm($request, $this->form);

		$this->setTemplate('edit');
	}

	public function executeDelete(sfWebRequest $request)
	{
		$request->checkCSRFProtection();

		$this->forward404Unless($utilisateur = Doctrine_Core::getTable('Utilisateur')->find(array($request->getParameter('id'))), sprintf('Object utilisateur does not exist (%s).', $request->getParameter('id')));
		$utilisateur->delete();

		$this->redirect('utilisateur/list');
	}

	protected function processForm(sfWebRequest $request, sfForm $form)
	{
		$form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName()));
		if ($form->isValid())
		{
			$utilisateur = $form->save();

			$this->redirect('utilisateur/index');
		}
	}
}
